import pandas as pd

# 读取 Excel 文件
file_path = "Main_results/1_table1/1_table1.xlsx"  # 替换为您的文件路径

# 获取所有的 sheet_names
excel_file = pd.ExcelFile(file_path)
sheet_names = excel_file.sheet_names  # 自动检测所有 sheet 的名称

# 遍历每个 sheet
for sheet_name in sheet_names:
    # 从当前 sheet 读取数据
    df = pd.read_excel(file_path, sheet_name=sheet_name, header=None)

    # 找到 "avg" 和 "std" 的位置
    try:
        avg_row_idx = df[df.isin(["avg"]).any(axis=1)].index[0]  # 找到 avg 所在行索引
        std_row_idx = df[df.isin(["std"]).any(axis=1)].index[0]  # 找到 std 所在行索引

        # 自动检测 "avg" 开始的列索引
        avg_col_idx = df.iloc[avg_row_idx, :].eq("avg").idxmax() + 1

        # 提取列索引（假设第一行是列名）
        column_names = df.iloc[0, avg_col_idx:].values  # 提取列名（从 avg 开始的列）

        # 提取 avg 和 std 的值
        avg_values = df.iloc[avg_row_idx, avg_col_idx:].values  # 从 avg 开始提取
        std_values = df.iloc[std_row_idx, avg_col_idx:].values  # 从 avg 开始提取

        # 转换 avg 和 std 的值为浮点数
        avg_values = [float(value) for value in avg_values]
        std_values = [float(value) for value in std_values]

        # 动态生成 LaTeX 行字符串
        latex_row = f"& {sheet_name} "  # 使用 sheet_name 作为行的开头
        for col, a, s in zip(column_names, avg_values, std_values):
            latex_row += f"& ${a:.2f}\\pm{s:.2f}$ "  # 格式化为 avg ± std

        latex_row += r"\\"

        # 输出 LaTeX 表格字符串
        print(latex_row)

    except IndexError:
        print(f"Skipping sheet '{sheet_name}' as it does not contain 'avg' or 'std'")
